﻿// Inner Fire 游戏引擎库
// Map 地图设置
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 所属层级：应用层(4)
// 用于地图的配置，各种代码代表的意义
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-06-14

#pragma once

#include <EASTL/string.h>
#include <game/resource/resource.h>
#include <xml_reader.h>
#include <memory>
#include <game/map/simple_map.h>

namespace ifire::game {
class Assets;

class Map : public Resource {
public:
  Map(Assets* manager, const ikit::XmlNode& node);
  Map(const Map& lhs) = delete;
  Map& operator=(const Map& lhs) = delete;
  ~Map();

  // 载入地图
  void Ready();
  // 得到地图信息
  const SimpleMap* GetSimpleMap() const { return map_.get(); }

public:
  // 此文件所引用的地图的路径
  eastl::string path;
  // 地图所对应的设置
  ikit::sstr setting;

private:
  // 地图载入的项目
  std::unique_ptr<SimpleMap> map_;
};

using MapPtr = std::unique_ptr<Map>;

} // namespace ifire::game